// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: dc2.proto

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "dc2.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)

namespace dc2 {
class EmptyDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<Empty>
     _instance;
} _Empty_default_instance_;
class SIDMsgDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<SIDMsg>
     _instance;
} _SIDMsg_default_instance_;
class TimeDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<Time>
     _instance;
} _Time_default_instance_;
class ChannelsReqDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<ChannelsReq>
     _instance;
} _ChannelsReq_default_instance_;
class ChannelInfoReqDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<ChannelInfoReq>
     _instance;
} _ChannelInfoReq_default_instance_;
class ChatChannelDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<ChatChannel>
     _instance;
} _ChatChannel_default_instance_;
class SetChannelOptionsReqDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<SetChannelOptionsReq>
     _instance;
} _SetChannelOptionsReq_default_instance_;
class ChatMessageDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<ChatMessage>
     _instance;
  ::google::protobuf::int64 channel_;
  ::google::protobuf::int64 pm_user_;
} _ChatMessage_default_instance_;
class VersionDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<Version>
     _instance;
} _Version_default_instance_;
class SoftwareInfoDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<SoftwareInfo>
     _instance;
} _SoftwareInfo_default_instance_;
class UserDetailsDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<UserDetails>
     _instance;
} _UserDetails_default_instance_;
class UserDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<User>
     _instance;
} _User_default_instance_;
class UsersReqDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<UsersReq>
     _instance;
} _UsersReq_default_instance_;

namespace protobuf_dc2_2eproto {


namespace {

::google::protobuf::Metadata file_level_metadata[13];
const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[4];

}  // namespace

PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTableField
    const TableStruct::entries[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  {0, 0, 0, ::google::protobuf::internal::kInvalidMask, 0, 0},
};

PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::AuxillaryParseTableField
    const TableStruct::aux[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ::google::protobuf::internal::AuxillaryParseTableField(),
};
PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTable const
    TableStruct::schema[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
};

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Empty, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SIDMsg, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SIDMsg, sid_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Time, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Time, sec_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Time, nsec_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelsReq, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelsReq, after_sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelsReq, limit_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelsReq, watch_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelInfoReq, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelInfoReq, sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChannelInfoReq, name_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, name_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, desc_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, removed_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatChannel, private__),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SetChannelOptionsReq, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SetChannelOptionsReq, sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SetChannelOptionsReq, name_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SetChannelOptionsReq, state_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, _internal_metadata_),
  ~0u,  // no _extensions_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, text_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, ts_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, author_),
  offsetof(ChatMessageDefaultTypeInternal, channel_),
  offsetof(ChatMessageDefaultTypeInternal, pm_user_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, me_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, notify_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, mention_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ChatMessage, destitation_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Version, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Version, major_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Version, minor_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Version, patch_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SoftwareInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SoftwareInfo, name_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(SoftwareInfo, version_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserDetails, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserDetails, real_name_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserDetails, about_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserDetails, email_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, name_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, kind_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, status_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, role_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, client_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(User, details_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UsersReq, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UsersReq, channel_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UsersReq, after_sid_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UsersReq, limit_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UsersReq, watch_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(Empty)},
  { 5, -1, sizeof(SIDMsg)},
  { 11, -1, sizeof(Time)},
  { 18, -1, sizeof(ChannelsReq)},
  { 26, -1, sizeof(ChannelInfoReq)},
  { 33, -1, sizeof(ChatChannel)},
  { 43, -1, sizeof(SetChannelOptionsReq)},
  { 51, -1, sizeof(ChatMessage)},
  { 65, -1, sizeof(Version)},
  { 73, -1, sizeof(SoftwareInfo)},
  { 80, -1, sizeof(UserDetails)},
  { 88, -1, sizeof(User)},
  { 100, -1, sizeof(UsersReq)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&_Empty_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_SIDMsg_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_Time_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_ChannelsReq_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_ChannelInfoReq_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_ChatChannel_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_SetChannelOptionsReq_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_ChatMessage_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_Version_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_SoftwareInfo_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_UserDetails_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_User_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&_UsersReq_default_instance_),
};

namespace {

void protobuf_AssignDescriptors() {
  AddDescriptors();
  ::google::protobuf::MessageFactory* factory = NULL;
  AssignDescriptors(
      "dc2.proto", schemas, file_default_instances, TableStruct::offsets, factory,
      file_level_metadata, file_level_enum_descriptors, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 13);
}

}  // namespace
void TableStruct::InitDefaultsImpl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::internal::InitProtobufDefaults();
  _Empty_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_Empty_default_instance_);_SIDMsg_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_SIDMsg_default_instance_);_Time_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_Time_default_instance_);_ChannelsReq_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_ChannelsReq_default_instance_);_ChannelInfoReq_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_ChannelInfoReq_default_instance_);_ChatChannel_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_ChatChannel_default_instance_);_SetChannelOptionsReq_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_SetChannelOptionsReq_default_instance_);_ChatMessage_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_ChatMessage_default_instance_);_Version_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_Version_default_instance_);_SoftwareInfo_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_SoftwareInfo_default_instance_);_UserDetails_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_UserDetails_default_instance_);_User_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_User_default_instance_);_UsersReq_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_UsersReq_default_instance_);_ChatMessage_default_instance_._instance.get_mutable()->ts_ = const_cast< ::dc2::Time*>(
      ::dc2::Time::internal_default_instance());
  _ChatMessage_default_instance_.channel_ = GOOGLE_LONGLONG(0);
  _ChatMessage_default_instance_.pm_user_ = GOOGLE_LONGLONG(0);
  _SoftwareInfo_default_instance_._instance.get_mutable()->version_ = const_cast< ::dc2::Version*>(
      ::dc2::Version::internal_default_instance());
  _User_default_instance_._instance.get_mutable()->client_ = const_cast< ::dc2::SoftwareInfo*>(
      ::dc2::SoftwareInfo::internal_default_instance());
  _User_default_instance_._instance.get_mutable()->details_ = const_cast< ::dc2::UserDetails*>(
      ::dc2::UserDetails::internal_default_instance());
}

void InitDefaults() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &TableStruct::InitDefaultsImpl);
}
namespace {
void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n\tdc2.proto\022\003dc2\"\007\n\005Empty\"\025\n\006SIDMsg\022\013\n\003s"
      "id\030\001 \001(\003\"!\n\004Time\022\013\n\003sec\030\001 \001(\003\022\014\n\004nsec\030\002 "
      "\001(\003\">\n\013ChannelsReq\022\021\n\tafter_sid\030\001 \001(\003\022\r\n"
      "\005limit\030\002 \001(\005\022\r\n\005watch\030\003 \001(\010\"+\n\016ChannelIn"
      "foReq\022\013\n\003sid\030\001 \001(\003\022\014\n\004name\030\002 \001(\t\"X\n\013Chat"
      "Channel\022\013\n\003sid\030\001 \001(\003\022\014\n\004name\030\002 \001(\t\022\014\n\004de"
      "sc\030\003 \001(\t\022\017\n\007removed\030\004 \001(\010\022\017\n\007private\030\005 \001"
      "(\010\"\177\n\024SetChannelOptionsReq\022\013\n\003sid\030\001 \001(\003\022"
      "\014\n\004name\030\002 \001(\t\022.\n\005state\030\003 \001(\0162\037.dc2.SetCh"
      "annelOptionsReq.State\"\034\n\005State\022\010\n\004JOIN\020\000"
      "\022\t\n\005LEAVE\020\001\"\244\001\n\013ChatMessage\022\014\n\004text\030\001 \001("
      "\t\022\025\n\002ts\030\002 \001(\0132\t.dc2.Time\022\016\n\006author\030\003 \001(\003"
      "\022\021\n\007channel\030\004 \001(\003H\000\022\021\n\007pm_user\030\005 \001(\003H\000\022\n"
      "\n\002me\030\006 \001(\010\022\016\n\006notify\030\007 \001(\010\022\017\n\007mention\030\010 "
      "\003(\003B\r\n\013destitation\"6\n\007Version\022\r\n\005major\030\001"
      " \001(\005\022\r\n\005minor\030\002 \001(\005\022\r\n\005patch\030\003 \001(\005\";\n\014So"
      "ftwareInfo\022\014\n\004name\030\001 \001(\t\022\035\n\007version\030\002 \001("
      "\0132\014.dc2.Version\">\n\013UserDetails\022\021\n\treal_n"
      "ame\030\001 \001(\t\022\r\n\005about\030\002 \001(\t\022\r\n\005email\030\003 \001(\t\""
      "\333\002\n\004User\022\013\n\003sid\030\001 \001(\003\022\014\n\004name\030\002 \001(\t\022\034\n\004k"
      "ind\030\003 \001(\0162\016.dc2.User.Kind\022 \n\006status\030\004 \001("
      "\0162\020.dc2.User.Status\022\034\n\004role\030\005 \001(\0162\016.dc2."
      "User.Role\022!\n\006client\030\006 \001(\0132\021.dc2.Software"
      "Info\022!\n\007details\030\007 \001(\0132\020.dc2.UserDetails\""
      "\032\n\004Kind\022\t\n\005HUMAN\020\000\022\007\n\003BOT\020\001\"+\n\006Status\022\013\n"
      "\007OFFLINE\020\000\022\n\n\006ONLINE\020\001\022\010\n\004AWAY\020\002\"K\n\004Role"
      "\022\010\n\004NONE\020\000\022\020\n\014UNREGISTERED\020\001\022\016\n\nREGISTER"
      "ED\020\002\022\014\n\010OPERATOR\020\003\022\t\n\005ADMIN\020\004\"L\n\010UsersRe"
      "q\022\017\n\007channel\030\001 \001(\003\022\021\n\tafter_sid\030\002 \001(\003\022\r\n"
      "\005limit\030\003 \001(\005\022\r\n\005watch\030\004 \001(\0102\263\001\n\007ChatHub\022"
      "2\n\010Channels\022\020.dc2.ChannelsReq\032\020.dc2.Chat"
      "Channel\"\0000\001\0226\n\013ChannelInfo\022\023.dc2.Channel"
      "InfoReq\032\020.dc2.ChatChannel\"\000\022<\n\021SetChanne"
      "lOptions\022\031.dc2.SetChannelOptionsReq\032\n.dc"
      "2.Empty\"\0002B\n\004Chat\022:\n\016StreamMessages\022\020.dc"
      "2.ChatMessage\032\020.dc2.ChatMessage\"\000(\0010\0012+\n"
      "\010Identity\022\037\n\004Info\022\n.dc2.Empty\032\t.dc2.User"
      "\"\0002\177\n\010UsersHub\022$\n\010UserInfo\022\013.dc2.SIDMsg\032"
      "\t.dc2.User\"\000\022&\n\nUpdateInfo\022\t.dc2.User\032\013."
      "dc2.SIDMsg\"\000\022%\n\005Users\022\r.dc2.UsersReq\032\t.d"
      "c2.User\"\0000\001B\007Z\005dc2pbb\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 1628);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "dc2.proto", &protobuf_RegisterTypes);
}
} // anonymous namespace

void AddDescriptors() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;

}  // namespace protobuf_dc2_2eproto

const ::google::protobuf::EnumDescriptor* SetChannelOptionsReq_State_descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_enum_descriptors[0];
}
bool SetChannelOptionsReq_State_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const SetChannelOptionsReq_State SetChannelOptionsReq::JOIN;
const SetChannelOptionsReq_State SetChannelOptionsReq::LEAVE;
const SetChannelOptionsReq_State SetChannelOptionsReq::State_MIN;
const SetChannelOptionsReq_State SetChannelOptionsReq::State_MAX;
const int SetChannelOptionsReq::State_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
const ::google::protobuf::EnumDescriptor* User_Kind_descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_enum_descriptors[1];
}
bool User_Kind_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const User_Kind User::HUMAN;
const User_Kind User::BOT;
const User_Kind User::Kind_MIN;
const User_Kind User::Kind_MAX;
const int User::Kind_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
const ::google::protobuf::EnumDescriptor* User_Status_descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_enum_descriptors[2];
}
bool User_Status_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const User_Status User::OFFLINE;
const User_Status User::ONLINE;
const User_Status User::AWAY;
const User_Status User::Status_MIN;
const User_Status User::Status_MAX;
const int User::Status_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
const ::google::protobuf::EnumDescriptor* User_Role_descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_enum_descriptors[3];
}
bool User_Role_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const User_Role User::NONE;
const User_Role User::UNREGISTERED;
const User_Role User::REGISTERED;
const User_Role User::OPERATOR;
const User_Role User::ADMIN;
const User_Role User::Role_MIN;
const User_Role User::Role_MAX;
const int User::Role_ARRAYSIZE;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Empty::Empty()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.Empty)
}
Empty::Empty(const Empty& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:dc2.Empty)
}

void Empty::SharedCtor() {
  _cached_size_ = 0;
}

Empty::~Empty() {
  // @@protoc_insertion_point(destructor:dc2.Empty)
  SharedDtor();
}

void Empty::SharedDtor() {
}

void Empty::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* Empty::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const Empty& Empty::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

Empty* Empty::New(::google::protobuf::Arena* arena) const {
  Empty* n = new Empty;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void Empty::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.Empty)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear();
}

bool Empty::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.Empty)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
  handle_unusual:
    if (tag == 0) {
      goto success;
    }
    DO_(::google::protobuf::internal::WireFormat::SkipField(
          input, tag, _internal_metadata_.mutable_unknown_fields()));
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.Empty)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.Empty)
  return false;
#undef DO_
}

void Empty::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.Empty)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.Empty)
}

::google::protobuf::uint8* Empty::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.Empty)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.Empty)
  return target;
}

size_t Empty::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.Empty)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Empty::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.Empty)
  GOOGLE_DCHECK_NE(&from, this);
  const Empty* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const Empty>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.Empty)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.Empty)
    MergeFrom(*source);
  }
}

void Empty::MergeFrom(const Empty& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.Empty)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void Empty::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.Empty)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Empty::CopyFrom(const Empty& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.Empty)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Empty::IsInitialized() const {
  return true;
}

void Empty::Swap(Empty* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Empty::InternalSwap(Empty* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata Empty::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// Empty

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int SIDMsg::kSidFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

SIDMsg::SIDMsg()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.SIDMsg)
}
SIDMsg::SIDMsg(const SIDMsg& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  sid_ = from.sid_;
  // @@protoc_insertion_point(copy_constructor:dc2.SIDMsg)
}

void SIDMsg::SharedCtor() {
  sid_ = GOOGLE_LONGLONG(0);
  _cached_size_ = 0;
}

SIDMsg::~SIDMsg() {
  // @@protoc_insertion_point(destructor:dc2.SIDMsg)
  SharedDtor();
}

void SIDMsg::SharedDtor() {
}

void SIDMsg::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* SIDMsg::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const SIDMsg& SIDMsg::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

SIDMsg* SIDMsg::New(::google::protobuf::Arena* arena) const {
  SIDMsg* n = new SIDMsg;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void SIDMsg::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.SIDMsg)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  sid_ = GOOGLE_LONGLONG(0);
  _internal_metadata_.Clear();
}

bool SIDMsg::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.SIDMsg)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.SIDMsg)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.SIDMsg)
  return false;
#undef DO_
}

void SIDMsg::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.SIDMsg)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sid(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.SIDMsg)
}

::google::protobuf::uint8* SIDMsg::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.SIDMsg)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sid(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.SIDMsg)
  return target;
}

size_t SIDMsg::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.SIDMsg)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // int64 sid = 1;
  if (this->sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sid());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SIDMsg::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.SIDMsg)
  GOOGLE_DCHECK_NE(&from, this);
  const SIDMsg* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const SIDMsg>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.SIDMsg)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.SIDMsg)
    MergeFrom(*source);
  }
}

void SIDMsg::MergeFrom(const SIDMsg& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.SIDMsg)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.sid() != 0) {
    set_sid(from.sid());
  }
}

void SIDMsg::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.SIDMsg)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void SIDMsg::CopyFrom(const SIDMsg& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.SIDMsg)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SIDMsg::IsInitialized() const {
  return true;
}

void SIDMsg::Swap(SIDMsg* other) {
  if (other == this) return;
  InternalSwap(other);
}
void SIDMsg::InternalSwap(SIDMsg* other) {
  using std::swap;
  swap(sid_, other->sid_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata SIDMsg::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// SIDMsg

// int64 sid = 1;
void SIDMsg::clear_sid() {
  sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SIDMsg::sid() const {
  // @@protoc_insertion_point(field_get:dc2.SIDMsg.sid)
  return sid_;
}
void SIDMsg::set_sid(::google::protobuf::int64 value) {
  
  sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.SIDMsg.sid)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int Time::kSecFieldNumber;
const int Time::kNsecFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Time::Time()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.Time)
}
Time::Time(const Time& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&sec_, &from.sec_,
    static_cast<size_t>(reinterpret_cast<char*>(&nsec_) -
    reinterpret_cast<char*>(&sec_)) + sizeof(nsec_));
  // @@protoc_insertion_point(copy_constructor:dc2.Time)
}

void Time::SharedCtor() {
  ::memset(&sec_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nsec_) -
      reinterpret_cast<char*>(&sec_)) + sizeof(nsec_));
  _cached_size_ = 0;
}

Time::~Time() {
  // @@protoc_insertion_point(destructor:dc2.Time)
  SharedDtor();
}

void Time::SharedDtor() {
}

void Time::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* Time::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const Time& Time::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

Time* Time::New(::google::protobuf::Arena* arena) const {
  Time* n = new Time;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void Time::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.Time)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&sec_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&nsec_) -
      reinterpret_cast<char*>(&sec_)) + sizeof(nsec_));
  _internal_metadata_.Clear();
}

bool Time::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.Time)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sec = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int64 nsec = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &nsec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.Time)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.Time)
  return false;
#undef DO_
}

void Time::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.Time)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sec = 1;
  if (this->sec() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sec(), output);
  }

  // int64 nsec = 2;
  if (this->nsec() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->nsec(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.Time)
}

::google::protobuf::uint8* Time::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.Time)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sec = 1;
  if (this->sec() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sec(), target);
  }

  // int64 nsec = 2;
  if (this->nsec() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->nsec(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.Time)
  return target;
}

size_t Time::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.Time)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // int64 sec = 1;
  if (this->sec() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sec());
  }

  // int64 nsec = 2;
  if (this->nsec() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->nsec());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Time::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.Time)
  GOOGLE_DCHECK_NE(&from, this);
  const Time* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const Time>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.Time)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.Time)
    MergeFrom(*source);
  }
}

void Time::MergeFrom(const Time& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.Time)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.sec() != 0) {
    set_sec(from.sec());
  }
  if (from.nsec() != 0) {
    set_nsec(from.nsec());
  }
}

void Time::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.Time)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Time::CopyFrom(const Time& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.Time)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Time::IsInitialized() const {
  return true;
}

void Time::Swap(Time* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Time::InternalSwap(Time* other) {
  using std::swap;
  swap(sec_, other->sec_);
  swap(nsec_, other->nsec_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata Time::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// Time

// int64 sec = 1;
void Time::clear_sec() {
  sec_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 Time::sec() const {
  // @@protoc_insertion_point(field_get:dc2.Time.sec)
  return sec_;
}
void Time::set_sec(::google::protobuf::int64 value) {
  
  sec_ = value;
  // @@protoc_insertion_point(field_set:dc2.Time.sec)
}

// int64 nsec = 2;
void Time::clear_nsec() {
  nsec_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 Time::nsec() const {
  // @@protoc_insertion_point(field_get:dc2.Time.nsec)
  return nsec_;
}
void Time::set_nsec(::google::protobuf::int64 value) {
  
  nsec_ = value;
  // @@protoc_insertion_point(field_set:dc2.Time.nsec)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ChannelsReq::kAfterSidFieldNumber;
const int ChannelsReq::kLimitFieldNumber;
const int ChannelsReq::kWatchFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ChannelsReq::ChannelsReq()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.ChannelsReq)
}
ChannelsReq::ChannelsReq(const ChannelsReq& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&after_sid_, &from.after_sid_,
    static_cast<size_t>(reinterpret_cast<char*>(&watch_) -
    reinterpret_cast<char*>(&after_sid_)) + sizeof(watch_));
  // @@protoc_insertion_point(copy_constructor:dc2.ChannelsReq)
}

void ChannelsReq::SharedCtor() {
  ::memset(&after_sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&watch_) -
      reinterpret_cast<char*>(&after_sid_)) + sizeof(watch_));
  _cached_size_ = 0;
}

ChannelsReq::~ChannelsReq() {
  // @@protoc_insertion_point(destructor:dc2.ChannelsReq)
  SharedDtor();
}

void ChannelsReq::SharedDtor() {
}

void ChannelsReq::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ChannelsReq::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const ChannelsReq& ChannelsReq::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

ChannelsReq* ChannelsReq::New(::google::protobuf::Arena* arena) const {
  ChannelsReq* n = new ChannelsReq;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ChannelsReq::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.ChannelsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&after_sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&watch_) -
      reinterpret_cast<char*>(&after_sid_)) + sizeof(watch_));
  _internal_metadata_.Clear();
}

bool ChannelsReq::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.ChannelsReq)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 after_sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &after_sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 limit = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &limit_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool watch = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &watch_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.ChannelsReq)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.ChannelsReq)
  return false;
#undef DO_
}

void ChannelsReq::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.ChannelsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 after_sid = 1;
  if (this->after_sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->after_sid(), output);
  }

  // int32 limit = 2;
  if (this->limit() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->limit(), output);
  }

  // bool watch = 3;
  if (this->watch() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->watch(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.ChannelsReq)
}

::google::protobuf::uint8* ChannelsReq::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.ChannelsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 after_sid = 1;
  if (this->after_sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->after_sid(), target);
  }

  // int32 limit = 2;
  if (this->limit() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->limit(), target);
  }

  // bool watch = 3;
  if (this->watch() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->watch(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.ChannelsReq)
  return target;
}

size_t ChannelsReq::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.ChannelsReq)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // int64 after_sid = 1;
  if (this->after_sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->after_sid());
  }

  // int32 limit = 2;
  if (this->limit() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->limit());
  }

  // bool watch = 3;
  if (this->watch() != 0) {
    total_size += 1 + 1;
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ChannelsReq::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.ChannelsReq)
  GOOGLE_DCHECK_NE(&from, this);
  const ChannelsReq* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const ChannelsReq>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.ChannelsReq)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.ChannelsReq)
    MergeFrom(*source);
  }
}

void ChannelsReq::MergeFrom(const ChannelsReq& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.ChannelsReq)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.after_sid() != 0) {
    set_after_sid(from.after_sid());
  }
  if (from.limit() != 0) {
    set_limit(from.limit());
  }
  if (from.watch() != 0) {
    set_watch(from.watch());
  }
}

void ChannelsReq::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.ChannelsReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ChannelsReq::CopyFrom(const ChannelsReq& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.ChannelsReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ChannelsReq::IsInitialized() const {
  return true;
}

void ChannelsReq::Swap(ChannelsReq* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ChannelsReq::InternalSwap(ChannelsReq* other) {
  using std::swap;
  swap(after_sid_, other->after_sid_);
  swap(limit_, other->limit_);
  swap(watch_, other->watch_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ChannelsReq::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ChannelsReq

// int64 after_sid = 1;
void ChannelsReq::clear_after_sid() {
  after_sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 ChannelsReq::after_sid() const {
  // @@protoc_insertion_point(field_get:dc2.ChannelsReq.after_sid)
  return after_sid_;
}
void ChannelsReq::set_after_sid(::google::protobuf::int64 value) {
  
  after_sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChannelsReq.after_sid)
}

// int32 limit = 2;
void ChannelsReq::clear_limit() {
  limit_ = 0;
}
::google::protobuf::int32 ChannelsReq::limit() const {
  // @@protoc_insertion_point(field_get:dc2.ChannelsReq.limit)
  return limit_;
}
void ChannelsReq::set_limit(::google::protobuf::int32 value) {
  
  limit_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChannelsReq.limit)
}

// bool watch = 3;
void ChannelsReq::clear_watch() {
  watch_ = false;
}
bool ChannelsReq::watch() const {
  // @@protoc_insertion_point(field_get:dc2.ChannelsReq.watch)
  return watch_;
}
void ChannelsReq::set_watch(bool value) {
  
  watch_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChannelsReq.watch)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ChannelInfoReq::kSidFieldNumber;
const int ChannelInfoReq::kNameFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ChannelInfoReq::ChannelInfoReq()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.ChannelInfoReq)
}
ChannelInfoReq::ChannelInfoReq(const ChannelInfoReq& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.name().size() > 0) {
    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  sid_ = from.sid_;
  // @@protoc_insertion_point(copy_constructor:dc2.ChannelInfoReq)
}

void ChannelInfoReq::SharedCtor() {
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sid_ = GOOGLE_LONGLONG(0);
  _cached_size_ = 0;
}

ChannelInfoReq::~ChannelInfoReq() {
  // @@protoc_insertion_point(destructor:dc2.ChannelInfoReq)
  SharedDtor();
}

void ChannelInfoReq::SharedDtor() {
  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void ChannelInfoReq::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ChannelInfoReq::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const ChannelInfoReq& ChannelInfoReq::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

ChannelInfoReq* ChannelInfoReq::New(::google::protobuf::Arena* arena) const {
  ChannelInfoReq* n = new ChannelInfoReq;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ChannelInfoReq::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.ChannelInfoReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sid_ = GOOGLE_LONGLONG(0);
  _internal_metadata_.Clear();
}

bool ChannelInfoReq::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.ChannelInfoReq)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string name = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->name().data(), static_cast<int>(this->name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.ChannelInfoReq.name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.ChannelInfoReq)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.ChannelInfoReq)
  return false;
#undef DO_
}

void ChannelInfoReq::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.ChannelInfoReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sid(), output);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChannelInfoReq.name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->name(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.ChannelInfoReq)
}

::google::protobuf::uint8* ChannelInfoReq::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.ChannelInfoReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sid(), target);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChannelInfoReq.name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->name(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.ChannelInfoReq)
  return target;
}

size_t ChannelInfoReq::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.ChannelInfoReq)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string name = 2;
  if (this->name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->name());
  }

  // int64 sid = 1;
  if (this->sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sid());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ChannelInfoReq::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.ChannelInfoReq)
  GOOGLE_DCHECK_NE(&from, this);
  const ChannelInfoReq* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const ChannelInfoReq>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.ChannelInfoReq)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.ChannelInfoReq)
    MergeFrom(*source);
  }
}

void ChannelInfoReq::MergeFrom(const ChannelInfoReq& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.ChannelInfoReq)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.name().size() > 0) {

    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.sid() != 0) {
    set_sid(from.sid());
  }
}

void ChannelInfoReq::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.ChannelInfoReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ChannelInfoReq::CopyFrom(const ChannelInfoReq& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.ChannelInfoReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ChannelInfoReq::IsInitialized() const {
  return true;
}

void ChannelInfoReq::Swap(ChannelInfoReq* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ChannelInfoReq::InternalSwap(ChannelInfoReq* other) {
  using std::swap;
  name_.Swap(&other->name_);
  swap(sid_, other->sid_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ChannelInfoReq::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ChannelInfoReq

// int64 sid = 1;
void ChannelInfoReq::clear_sid() {
  sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 ChannelInfoReq::sid() const {
  // @@protoc_insertion_point(field_get:dc2.ChannelInfoReq.sid)
  return sid_;
}
void ChannelInfoReq::set_sid(::google::protobuf::int64 value) {
  
  sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChannelInfoReq.sid)
}

// string name = 2;
void ChannelInfoReq::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& ChannelInfoReq::name() const {
  // @@protoc_insertion_point(field_get:dc2.ChannelInfoReq.name)
  return name_.GetNoArena();
}
void ChannelInfoReq::set_name(const ::std::string& value) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.ChannelInfoReq.name)
}
#if LANG_CXX11
void ChannelInfoReq::set_name(::std::string&& value) {
  
  name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.ChannelInfoReq.name)
}
#endif
void ChannelInfoReq::set_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.ChannelInfoReq.name)
}
void ChannelInfoReq::set_name(const char* value, size_t size) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.ChannelInfoReq.name)
}
::std::string* ChannelInfoReq::mutable_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.ChannelInfoReq.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* ChannelInfoReq::release_name() {
  // @@protoc_insertion_point(field_release:dc2.ChannelInfoReq.name)
  
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void ChannelInfoReq::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    
  } else {
    
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:dc2.ChannelInfoReq.name)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ChatChannel::kSidFieldNumber;
const int ChatChannel::kNameFieldNumber;
const int ChatChannel::kDescFieldNumber;
const int ChatChannel::kRemovedFieldNumber;
const int ChatChannel::kPrivateFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ChatChannel::ChatChannel()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.ChatChannel)
}
ChatChannel::ChatChannel(const ChatChannel& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.name().size() > 0) {
    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  desc_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.desc().size() > 0) {
    desc_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.desc_);
  }
  ::memcpy(&sid_, &from.sid_,
    static_cast<size_t>(reinterpret_cast<char*>(&private__) -
    reinterpret_cast<char*>(&sid_)) + sizeof(private__));
  // @@protoc_insertion_point(copy_constructor:dc2.ChatChannel)
}

void ChatChannel::SharedCtor() {
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  desc_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&private__) -
      reinterpret_cast<char*>(&sid_)) + sizeof(private__));
  _cached_size_ = 0;
}

ChatChannel::~ChatChannel() {
  // @@protoc_insertion_point(destructor:dc2.ChatChannel)
  SharedDtor();
}

void ChatChannel::SharedDtor() {
  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  desc_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void ChatChannel::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ChatChannel::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const ChatChannel& ChatChannel::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

ChatChannel* ChatChannel::New(::google::protobuf::Arena* arena) const {
  ChatChannel* n = new ChatChannel;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ChatChannel::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.ChatChannel)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  desc_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&private__) -
      reinterpret_cast<char*>(&sid_)) + sizeof(private__));
  _internal_metadata_.Clear();
}

bool ChatChannel::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.ChatChannel)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string name = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->name().data(), static_cast<int>(this->name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.ChatChannel.name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string desc = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_desc()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->desc().data(), static_cast<int>(this->desc().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.ChatChannel.desc"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool removed = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &removed_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool private = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &private__)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.ChatChannel)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.ChatChannel)
  return false;
#undef DO_
}

void ChatChannel::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.ChatChannel)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sid(), output);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatChannel.name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->name(), output);
  }

  // string desc = 3;
  if (this->desc().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->desc().data(), static_cast<int>(this->desc().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatChannel.desc");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->desc(), output);
  }

  // bool removed = 4;
  if (this->removed() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->removed(), output);
  }

  // bool private = 5;
  if (this->private_() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->private_(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.ChatChannel)
}

::google::protobuf::uint8* ChatChannel::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.ChatChannel)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sid(), target);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatChannel.name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->name(), target);
  }

  // string desc = 3;
  if (this->desc().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->desc().data(), static_cast<int>(this->desc().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatChannel.desc");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        3, this->desc(), target);
  }

  // bool removed = 4;
  if (this->removed() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->removed(), target);
  }

  // bool private = 5;
  if (this->private_() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->private_(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.ChatChannel)
  return target;
}

size_t ChatChannel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.ChatChannel)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string name = 2;
  if (this->name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->name());
  }

  // string desc = 3;
  if (this->desc().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->desc());
  }

  // int64 sid = 1;
  if (this->sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sid());
  }

  // bool removed = 4;
  if (this->removed() != 0) {
    total_size += 1 + 1;
  }

  // bool private = 5;
  if (this->private_() != 0) {
    total_size += 1 + 1;
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ChatChannel::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.ChatChannel)
  GOOGLE_DCHECK_NE(&from, this);
  const ChatChannel* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const ChatChannel>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.ChatChannel)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.ChatChannel)
    MergeFrom(*source);
  }
}

void ChatChannel::MergeFrom(const ChatChannel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.ChatChannel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.name().size() > 0) {

    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.desc().size() > 0) {

    desc_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.desc_);
  }
  if (from.sid() != 0) {
    set_sid(from.sid());
  }
  if (from.removed() != 0) {
    set_removed(from.removed());
  }
  if (from.private_() != 0) {
    set_private_(from.private_());
  }
}

void ChatChannel::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.ChatChannel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ChatChannel::CopyFrom(const ChatChannel& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.ChatChannel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ChatChannel::IsInitialized() const {
  return true;
}

void ChatChannel::Swap(ChatChannel* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ChatChannel::InternalSwap(ChatChannel* other) {
  using std::swap;
  name_.Swap(&other->name_);
  desc_.Swap(&other->desc_);
  swap(sid_, other->sid_);
  swap(removed_, other->removed_);
  swap(private__, other->private__);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ChatChannel::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ChatChannel

// int64 sid = 1;
void ChatChannel::clear_sid() {
  sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 ChatChannel::sid() const {
  // @@protoc_insertion_point(field_get:dc2.ChatChannel.sid)
  return sid_;
}
void ChatChannel::set_sid(::google::protobuf::int64 value) {
  
  sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatChannel.sid)
}

// string name = 2;
void ChatChannel::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& ChatChannel::name() const {
  // @@protoc_insertion_point(field_get:dc2.ChatChannel.name)
  return name_.GetNoArena();
}
void ChatChannel::set_name(const ::std::string& value) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.ChatChannel.name)
}
#if LANG_CXX11
void ChatChannel::set_name(::std::string&& value) {
  
  name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.ChatChannel.name)
}
#endif
void ChatChannel::set_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.ChatChannel.name)
}
void ChatChannel::set_name(const char* value, size_t size) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.ChatChannel.name)
}
::std::string* ChatChannel::mutable_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.ChatChannel.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* ChatChannel::release_name() {
  // @@protoc_insertion_point(field_release:dc2.ChatChannel.name)
  
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void ChatChannel::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    
  } else {
    
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:dc2.ChatChannel.name)
}

// string desc = 3;
void ChatChannel::clear_desc() {
  desc_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& ChatChannel::desc() const {
  // @@protoc_insertion_point(field_get:dc2.ChatChannel.desc)
  return desc_.GetNoArena();
}
void ChatChannel::set_desc(const ::std::string& value) {
  
  desc_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.ChatChannel.desc)
}
#if LANG_CXX11
void ChatChannel::set_desc(::std::string&& value) {
  
  desc_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.ChatChannel.desc)
}
#endif
void ChatChannel::set_desc(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  desc_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.ChatChannel.desc)
}
void ChatChannel::set_desc(const char* value, size_t size) {
  
  desc_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.ChatChannel.desc)
}
::std::string* ChatChannel::mutable_desc() {
  
  // @@protoc_insertion_point(field_mutable:dc2.ChatChannel.desc)
  return desc_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* ChatChannel::release_desc() {
  // @@protoc_insertion_point(field_release:dc2.ChatChannel.desc)
  
  return desc_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void ChatChannel::set_allocated_desc(::std::string* desc) {
  if (desc != NULL) {
    
  } else {
    
  }
  desc_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), desc);
  // @@protoc_insertion_point(field_set_allocated:dc2.ChatChannel.desc)
}

// bool removed = 4;
void ChatChannel::clear_removed() {
  removed_ = false;
}
bool ChatChannel::removed() const {
  // @@protoc_insertion_point(field_get:dc2.ChatChannel.removed)
  return removed_;
}
void ChatChannel::set_removed(bool value) {
  
  removed_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatChannel.removed)
}

// bool private = 5;
void ChatChannel::clear_private_() {
  private__ = false;
}
bool ChatChannel::private_() const {
  // @@protoc_insertion_point(field_get:dc2.ChatChannel.private)
  return private__;
}
void ChatChannel::set_private_(bool value) {
  
  private__ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatChannel.private)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int SetChannelOptionsReq::kSidFieldNumber;
const int SetChannelOptionsReq::kNameFieldNumber;
const int SetChannelOptionsReq::kStateFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

SetChannelOptionsReq::SetChannelOptionsReq()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.SetChannelOptionsReq)
}
SetChannelOptionsReq::SetChannelOptionsReq(const SetChannelOptionsReq& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.name().size() > 0) {
    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  ::memcpy(&sid_, &from.sid_,
    static_cast<size_t>(reinterpret_cast<char*>(&state_) -
    reinterpret_cast<char*>(&sid_)) + sizeof(state_));
  // @@protoc_insertion_point(copy_constructor:dc2.SetChannelOptionsReq)
}

void SetChannelOptionsReq::SharedCtor() {
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&state_) -
      reinterpret_cast<char*>(&sid_)) + sizeof(state_));
  _cached_size_ = 0;
}

SetChannelOptionsReq::~SetChannelOptionsReq() {
  // @@protoc_insertion_point(destructor:dc2.SetChannelOptionsReq)
  SharedDtor();
}

void SetChannelOptionsReq::SharedDtor() {
  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void SetChannelOptionsReq::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* SetChannelOptionsReq::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const SetChannelOptionsReq& SetChannelOptionsReq::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

SetChannelOptionsReq* SetChannelOptionsReq::New(::google::protobuf::Arena* arena) const {
  SetChannelOptionsReq* n = new SetChannelOptionsReq;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void SetChannelOptionsReq::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.SetChannelOptionsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&state_) -
      reinterpret_cast<char*>(&sid_)) + sizeof(state_));
  _internal_metadata_.Clear();
}

bool SetChannelOptionsReq::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.SetChannelOptionsReq)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string name = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->name().data(), static_cast<int>(this->name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.SetChannelOptionsReq.name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.SetChannelOptionsReq.State state = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_state(static_cast< ::dc2::SetChannelOptionsReq_State >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.SetChannelOptionsReq)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.SetChannelOptionsReq)
  return false;
#undef DO_
}

void SetChannelOptionsReq::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.SetChannelOptionsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sid(), output);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.SetChannelOptionsReq.name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->name(), output);
  }

  // .dc2.SetChannelOptionsReq.State state = 3;
  if (this->state() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->state(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.SetChannelOptionsReq)
}

::google::protobuf::uint8* SetChannelOptionsReq::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.SetChannelOptionsReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sid(), target);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.SetChannelOptionsReq.name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->name(), target);
  }

  // .dc2.SetChannelOptionsReq.State state = 3;
  if (this->state() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      3, this->state(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.SetChannelOptionsReq)
  return target;
}

size_t SetChannelOptionsReq::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.SetChannelOptionsReq)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string name = 2;
  if (this->name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->name());
  }

  // int64 sid = 1;
  if (this->sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sid());
  }

  // .dc2.SetChannelOptionsReq.State state = 3;
  if (this->state() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->state());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetChannelOptionsReq::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.SetChannelOptionsReq)
  GOOGLE_DCHECK_NE(&from, this);
  const SetChannelOptionsReq* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const SetChannelOptionsReq>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.SetChannelOptionsReq)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.SetChannelOptionsReq)
    MergeFrom(*source);
  }
}

void SetChannelOptionsReq::MergeFrom(const SetChannelOptionsReq& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.SetChannelOptionsReq)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.name().size() > 0) {

    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.sid() != 0) {
    set_sid(from.sid());
  }
  if (from.state() != 0) {
    set_state(from.state());
  }
}

void SetChannelOptionsReq::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.SetChannelOptionsReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void SetChannelOptionsReq::CopyFrom(const SetChannelOptionsReq& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.SetChannelOptionsReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetChannelOptionsReq::IsInitialized() const {
  return true;
}

void SetChannelOptionsReq::Swap(SetChannelOptionsReq* other) {
  if (other == this) return;
  InternalSwap(other);
}
void SetChannelOptionsReq::InternalSwap(SetChannelOptionsReq* other) {
  using std::swap;
  name_.Swap(&other->name_);
  swap(sid_, other->sid_);
  swap(state_, other->state_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata SetChannelOptionsReq::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// SetChannelOptionsReq

// int64 sid = 1;
void SetChannelOptionsReq::clear_sid() {
  sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 SetChannelOptionsReq::sid() const {
  // @@protoc_insertion_point(field_get:dc2.SetChannelOptionsReq.sid)
  return sid_;
}
void SetChannelOptionsReq::set_sid(::google::protobuf::int64 value) {
  
  sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.SetChannelOptionsReq.sid)
}

// string name = 2;
void SetChannelOptionsReq::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SetChannelOptionsReq::name() const {
  // @@protoc_insertion_point(field_get:dc2.SetChannelOptionsReq.name)
  return name_.GetNoArena();
}
void SetChannelOptionsReq::set_name(const ::std::string& value) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.SetChannelOptionsReq.name)
}
#if LANG_CXX11
void SetChannelOptionsReq::set_name(::std::string&& value) {
  
  name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.SetChannelOptionsReq.name)
}
#endif
void SetChannelOptionsReq::set_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.SetChannelOptionsReq.name)
}
void SetChannelOptionsReq::set_name(const char* value, size_t size) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.SetChannelOptionsReq.name)
}
::std::string* SetChannelOptionsReq::mutable_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.SetChannelOptionsReq.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SetChannelOptionsReq::release_name() {
  // @@protoc_insertion_point(field_release:dc2.SetChannelOptionsReq.name)
  
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SetChannelOptionsReq::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    
  } else {
    
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:dc2.SetChannelOptionsReq.name)
}

// .dc2.SetChannelOptionsReq.State state = 3;
void SetChannelOptionsReq::clear_state() {
  state_ = 0;
}
::dc2::SetChannelOptionsReq_State SetChannelOptionsReq::state() const {
  // @@protoc_insertion_point(field_get:dc2.SetChannelOptionsReq.state)
  return static_cast< ::dc2::SetChannelOptionsReq_State >(state_);
}
void SetChannelOptionsReq::set_state(::dc2::SetChannelOptionsReq_State value) {
  
  state_ = value;
  // @@protoc_insertion_point(field_set:dc2.SetChannelOptionsReq.state)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int ChatMessage::kTextFieldNumber;
const int ChatMessage::kTsFieldNumber;
const int ChatMessage::kAuthorFieldNumber;
const int ChatMessage::kChannelFieldNumber;
const int ChatMessage::kPmUserFieldNumber;
const int ChatMessage::kMeFieldNumber;
const int ChatMessage::kNotifyFieldNumber;
const int ChatMessage::kMentionFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

ChatMessage::ChatMessage()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.ChatMessage)
}
ChatMessage::ChatMessage(const ChatMessage& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      mention_(from.mention_),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.text().size() > 0) {
    text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.text_);
  }
  if (from.has_ts()) {
    ts_ = new ::dc2::Time(*from.ts_);
  } else {
    ts_ = NULL;
  }
  ::memcpy(&author_, &from.author_,
    static_cast<size_t>(reinterpret_cast<char*>(&notify_) -
    reinterpret_cast<char*>(&author_)) + sizeof(notify_));
  clear_has_destitation();
  switch (from.destitation_case()) {
    case kChannel: {
      set_channel(from.channel());
      break;
    }
    case kPmUser: {
      set_pm_user(from.pm_user());
      break;
    }
    case DESTITATION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:dc2.ChatMessage)
}

void ChatMessage::SharedCtor() {
  text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&ts_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&notify_) -
      reinterpret_cast<char*>(&ts_)) + sizeof(notify_));
  clear_has_destitation();
  _cached_size_ = 0;
}

ChatMessage::~ChatMessage() {
  // @@protoc_insertion_point(destructor:dc2.ChatMessage)
  SharedDtor();
}

void ChatMessage::SharedDtor() {
  text_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete ts_;
  if (has_destitation()) {
    clear_destitation();
  }
}

void ChatMessage::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ChatMessage::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const ChatMessage& ChatMessage::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

ChatMessage* ChatMessage::New(::google::protobuf::Arena* arena) const {
  ChatMessage* n = new ChatMessage;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void ChatMessage::clear_destitation() {
// @@protoc_insertion_point(one_of_clear_start:dc2.ChatMessage)
  switch (destitation_case()) {
    case kChannel: {
      // No need to clear
      break;
    }
    case kPmUser: {
      // No need to clear
      break;
    }
    case DESTITATION_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = DESTITATION_NOT_SET;
}


void ChatMessage::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.ChatMessage)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  mention_.Clear();
  text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && ts_ != NULL) {
    delete ts_;
  }
  ts_ = NULL;
  ::memset(&author_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&notify_) -
      reinterpret_cast<char*>(&author_)) + sizeof(notify_));
  clear_destitation();
  _internal_metadata_.Clear();
}

bool ChatMessage::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.ChatMessage)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string text = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_text()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->text().data(), static_cast<int>(this->text().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.ChatMessage.text"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.Time ts = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_ts()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int64 author = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &author_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int64 channel = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
          clear_destitation();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &destitation_.channel_)));
          set_has_channel();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int64 pm_user = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
          clear_destitation();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &destitation_.pm_user_)));
          set_has_pm_user();
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool me = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &me_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool notify = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &notify_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int64 mention = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, this->mutable_mention())));
        } else if (
            static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 1, 66u, input, this->mutable_mention())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.ChatMessage)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.ChatMessage)
  return false;
#undef DO_
}

void ChatMessage::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.ChatMessage)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string text = 1;
  if (this->text().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->text().data(), static_cast<int>(this->text().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatMessage.text");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->text(), output);
  }

  // .dc2.Time ts = 2;
  if (this->has_ts()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, *this->ts_, output);
  }

  // int64 author = 3;
  if (this->author() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->author(), output);
  }

  // int64 channel = 4;
  if (has_channel()) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(4, this->channel(), output);
  }

  // int64 pm_user = 5;
  if (has_pm_user()) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->pm_user(), output);
  }

  // bool me = 6;
  if (this->me() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->me(), output);
  }

  // bool notify = 7;
  if (this->notify() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->notify(), output);
  }

  // repeated int64 mention = 8;
  if (this->mention_size() > 0) {
    ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
        _mention_cached_byte_size_));
  }
  for (int i = 0, n = this->mention_size(); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64NoTag(
      this->mention(i), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.ChatMessage)
}

::google::protobuf::uint8* ChatMessage::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.ChatMessage)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string text = 1;
  if (this->text().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->text().data(), static_cast<int>(this->text().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.ChatMessage.text");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->text(), target);
  }

  // .dc2.Time ts = 2;
  if (this->has_ts()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        2, *this->ts_, deterministic, target);
  }

  // int64 author = 3;
  if (this->author() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->author(), target);
  }

  // int64 channel = 4;
  if (has_channel()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(4, this->channel(), target);
  }

  // int64 pm_user = 5;
  if (has_pm_user()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->pm_user(), target);
  }

  // bool me = 6;
  if (this->me() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->me(), target);
  }

  // bool notify = 7;
  if (this->notify() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->notify(), target);
  }

  // repeated int64 mention = 8;
  if (this->mention_size() > 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
      8,
      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
      target);
    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
        static_cast< ::google::protobuf::uint32>(
            _mention_cached_byte_size_), target);
    target = ::google::protobuf::internal::WireFormatLite::
      WriteInt64NoTagToArray(this->mention_, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.ChatMessage)
  return target;
}

size_t ChatMessage::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.ChatMessage)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // repeated int64 mention = 8;
  {
    size_t data_size = ::google::protobuf::internal::WireFormatLite::
      Int64Size(this->mention_);
    if (data_size > 0) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
            static_cast< ::google::protobuf::int32>(data_size));
    }
    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
    _mention_cached_byte_size_ = cached_size;
    GOOGLE_SAFE_CONCURRENT_WRITES_END();
    total_size += data_size;
  }

  // string text = 1;
  if (this->text().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->text());
  }

  // .dc2.Time ts = 2;
  if (this->has_ts()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->ts_);
  }

  // int64 author = 3;
  if (this->author() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->author());
  }

  // bool me = 6;
  if (this->me() != 0) {
    total_size += 1 + 1;
  }

  // bool notify = 7;
  if (this->notify() != 0) {
    total_size += 1 + 1;
  }

  switch (destitation_case()) {
    // int64 channel = 4;
    case kChannel: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->channel());
      break;
    }
    // int64 pm_user = 5;
    case kPmUser: {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->pm_user());
      break;
    }
    case DESTITATION_NOT_SET: {
      break;
    }
  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ChatMessage::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.ChatMessage)
  GOOGLE_DCHECK_NE(&from, this);
  const ChatMessage* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const ChatMessage>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.ChatMessage)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.ChatMessage)
    MergeFrom(*source);
  }
}

void ChatMessage::MergeFrom(const ChatMessage& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.ChatMessage)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  mention_.MergeFrom(from.mention_);
  if (from.text().size() > 0) {

    text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.text_);
  }
  if (from.has_ts()) {
    mutable_ts()->::dc2::Time::MergeFrom(from.ts());
  }
  if (from.author() != 0) {
    set_author(from.author());
  }
  if (from.me() != 0) {
    set_me(from.me());
  }
  if (from.notify() != 0) {
    set_notify(from.notify());
  }
  switch (from.destitation_case()) {
    case kChannel: {
      set_channel(from.channel());
      break;
    }
    case kPmUser: {
      set_pm_user(from.pm_user());
      break;
    }
    case DESTITATION_NOT_SET: {
      break;
    }
  }
}

void ChatMessage::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.ChatMessage)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ChatMessage::CopyFrom(const ChatMessage& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.ChatMessage)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ChatMessage::IsInitialized() const {
  return true;
}

void ChatMessage::Swap(ChatMessage* other) {
  if (other == this) return;
  InternalSwap(other);
}
void ChatMessage::InternalSwap(ChatMessage* other) {
  using std::swap;
  mention_.InternalSwap(&other->mention_);
  text_.Swap(&other->text_);
  swap(ts_, other->ts_);
  swap(author_, other->author_);
  swap(me_, other->me_);
  swap(notify_, other->notify_);
  swap(destitation_, other->destitation_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata ChatMessage::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// ChatMessage

// string text = 1;
void ChatMessage::clear_text() {
  text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& ChatMessage::text() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.text)
  return text_.GetNoArena();
}
void ChatMessage::set_text(const ::std::string& value) {
  
  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.text)
}
#if LANG_CXX11
void ChatMessage::set_text(::std::string&& value) {
  
  text_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.ChatMessage.text)
}
#endif
void ChatMessage::set_text(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.ChatMessage.text)
}
void ChatMessage::set_text(const char* value, size_t size) {
  
  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.ChatMessage.text)
}
::std::string* ChatMessage::mutable_text() {
  
  // @@protoc_insertion_point(field_mutable:dc2.ChatMessage.text)
  return text_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* ChatMessage::release_text() {
  // @@protoc_insertion_point(field_release:dc2.ChatMessage.text)
  
  return text_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void ChatMessage::set_allocated_text(::std::string* text) {
  if (text != NULL) {
    
  } else {
    
  }
  text_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), text);
  // @@protoc_insertion_point(field_set_allocated:dc2.ChatMessage.text)
}

// .dc2.Time ts = 2;
bool ChatMessage::has_ts() const {
  return this != internal_default_instance() && ts_ != NULL;
}
void ChatMessage::clear_ts() {
  if (GetArenaNoVirtual() == NULL && ts_ != NULL) delete ts_;
  ts_ = NULL;
}
const ::dc2::Time& ChatMessage::ts() const {
  const ::dc2::Time* p = ts_;
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.ts)
  return p != NULL ? *p : *reinterpret_cast<const ::dc2::Time*>(
      &::dc2::_Time_default_instance_);
}
::dc2::Time* ChatMessage::mutable_ts() {
  
  if (ts_ == NULL) {
    ts_ = new ::dc2::Time;
  }
  // @@protoc_insertion_point(field_mutable:dc2.ChatMessage.ts)
  return ts_;
}
::dc2::Time* ChatMessage::release_ts() {
  // @@protoc_insertion_point(field_release:dc2.ChatMessage.ts)
  
  ::dc2::Time* temp = ts_;
  ts_ = NULL;
  return temp;
}
void ChatMessage::set_allocated_ts(::dc2::Time* ts) {
  delete ts_;
  ts_ = ts;
  if (ts) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:dc2.ChatMessage.ts)
}

// int64 author = 3;
void ChatMessage::clear_author() {
  author_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 ChatMessage::author() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.author)
  return author_;
}
void ChatMessage::set_author(::google::protobuf::int64 value) {
  
  author_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.author)
}

// int64 channel = 4;
bool ChatMessage::has_channel() const {
  return destitation_case() == kChannel;
}
void ChatMessage::set_has_channel() {
  _oneof_case_[0] = kChannel;
}
void ChatMessage::clear_channel() {
  if (has_channel()) {
    destitation_.channel_ = GOOGLE_LONGLONG(0);
    clear_has_destitation();
  }
}
::google::protobuf::int64 ChatMessage::channel() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.channel)
  if (has_channel()) {
    return destitation_.channel_;
  }
  return GOOGLE_LONGLONG(0);
}
void ChatMessage::set_channel(::google::protobuf::int64 value) {
  if (!has_channel()) {
    clear_destitation();
    set_has_channel();
  }
  destitation_.channel_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.channel)
}

// int64 pm_user = 5;
bool ChatMessage::has_pm_user() const {
  return destitation_case() == kPmUser;
}
void ChatMessage::set_has_pm_user() {
  _oneof_case_[0] = kPmUser;
}
void ChatMessage::clear_pm_user() {
  if (has_pm_user()) {
    destitation_.pm_user_ = GOOGLE_LONGLONG(0);
    clear_has_destitation();
  }
}
::google::protobuf::int64 ChatMessage::pm_user() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.pm_user)
  if (has_pm_user()) {
    return destitation_.pm_user_;
  }
  return GOOGLE_LONGLONG(0);
}
void ChatMessage::set_pm_user(::google::protobuf::int64 value) {
  if (!has_pm_user()) {
    clear_destitation();
    set_has_pm_user();
  }
  destitation_.pm_user_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.pm_user)
}

// bool me = 6;
void ChatMessage::clear_me() {
  me_ = false;
}
bool ChatMessage::me() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.me)
  return me_;
}
void ChatMessage::set_me(bool value) {
  
  me_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.me)
}

// bool notify = 7;
void ChatMessage::clear_notify() {
  notify_ = false;
}
bool ChatMessage::notify() const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.notify)
  return notify_;
}
void ChatMessage::set_notify(bool value) {
  
  notify_ = value;
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.notify)
}

// repeated int64 mention = 8;
int ChatMessage::mention_size() const {
  return mention_.size();
}
void ChatMessage::clear_mention() {
  mention_.Clear();
}
::google::protobuf::int64 ChatMessage::mention(int index) const {
  // @@protoc_insertion_point(field_get:dc2.ChatMessage.mention)
  return mention_.Get(index);
}
void ChatMessage::set_mention(int index, ::google::protobuf::int64 value) {
  mention_.Set(index, value);
  // @@protoc_insertion_point(field_set:dc2.ChatMessage.mention)
}
void ChatMessage::add_mention(::google::protobuf::int64 value) {
  mention_.Add(value);
  // @@protoc_insertion_point(field_add:dc2.ChatMessage.mention)
}
const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
ChatMessage::mention() const {
  // @@protoc_insertion_point(field_list:dc2.ChatMessage.mention)
  return mention_;
}
::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
ChatMessage::mutable_mention() {
  // @@protoc_insertion_point(field_mutable_list:dc2.ChatMessage.mention)
  return &mention_;
}

bool ChatMessage::has_destitation() const {
  return destitation_case() != DESTITATION_NOT_SET;
}
void ChatMessage::clear_has_destitation() {
  _oneof_case_[0] = DESTITATION_NOT_SET;
}
ChatMessage::DestitationCase ChatMessage::destitation_case() const {
  return ChatMessage::DestitationCase(_oneof_case_[0]);
}
#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int Version::kMajorFieldNumber;
const int Version::kMinorFieldNumber;
const int Version::kPatchFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Version::Version()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.Version)
}
Version::Version(const Version& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&major_, &from.major_,
    static_cast<size_t>(reinterpret_cast<char*>(&patch_) -
    reinterpret_cast<char*>(&major_)) + sizeof(patch_));
  // @@protoc_insertion_point(copy_constructor:dc2.Version)
}

void Version::SharedCtor() {
  ::memset(&major_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&patch_) -
      reinterpret_cast<char*>(&major_)) + sizeof(patch_));
  _cached_size_ = 0;
}

Version::~Version() {
  // @@protoc_insertion_point(destructor:dc2.Version)
  SharedDtor();
}

void Version::SharedDtor() {
}

void Version::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* Version::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const Version& Version::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

Version* Version::New(::google::protobuf::Arena* arena) const {
  Version* n = new Version;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void Version::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.Version)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&major_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&patch_) -
      reinterpret_cast<char*>(&major_)) + sizeof(patch_));
  _internal_metadata_.Clear();
}

bool Version::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.Version)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int32 major = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &major_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 minor = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &minor_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 patch = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &patch_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.Version)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.Version)
  return false;
#undef DO_
}

void Version::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.Version)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 major = 1;
  if (this->major() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->major(), output);
  }

  // int32 minor = 2;
  if (this->minor() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->minor(), output);
  }

  // int32 patch = 3;
  if (this->patch() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->patch(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.Version)
}

::google::protobuf::uint8* Version::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.Version)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 major = 1;
  if (this->major() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->major(), target);
  }

  // int32 minor = 2;
  if (this->minor() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->minor(), target);
  }

  // int32 patch = 3;
  if (this->patch() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->patch(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.Version)
  return target;
}

size_t Version::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.Version)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // int32 major = 1;
  if (this->major() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->major());
  }

  // int32 minor = 2;
  if (this->minor() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->minor());
  }

  // int32 patch = 3;
  if (this->patch() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->patch());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Version::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.Version)
  GOOGLE_DCHECK_NE(&from, this);
  const Version* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const Version>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.Version)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.Version)
    MergeFrom(*source);
  }
}

void Version::MergeFrom(const Version& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.Version)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.major() != 0) {
    set_major(from.major());
  }
  if (from.minor() != 0) {
    set_minor(from.minor());
  }
  if (from.patch() != 0) {
    set_patch(from.patch());
  }
}

void Version::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.Version)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Version::CopyFrom(const Version& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.Version)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Version::IsInitialized() const {
  return true;
}

void Version::Swap(Version* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Version::InternalSwap(Version* other) {
  using std::swap;
  swap(major_, other->major_);
  swap(minor_, other->minor_);
  swap(patch_, other->patch_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata Version::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// Version

// int32 major = 1;
void Version::clear_major() {
  major_ = 0;
}
::google::protobuf::int32 Version::major() const {
  // @@protoc_insertion_point(field_get:dc2.Version.major)
  return major_;
}
void Version::set_major(::google::protobuf::int32 value) {
  
  major_ = value;
  // @@protoc_insertion_point(field_set:dc2.Version.major)
}

// int32 minor = 2;
void Version::clear_minor() {
  minor_ = 0;
}
::google::protobuf::int32 Version::minor() const {
  // @@protoc_insertion_point(field_get:dc2.Version.minor)
  return minor_;
}
void Version::set_minor(::google::protobuf::int32 value) {
  
  minor_ = value;
  // @@protoc_insertion_point(field_set:dc2.Version.minor)
}

// int32 patch = 3;
void Version::clear_patch() {
  patch_ = 0;
}
::google::protobuf::int32 Version::patch() const {
  // @@protoc_insertion_point(field_get:dc2.Version.patch)
  return patch_;
}
void Version::set_patch(::google::protobuf::int32 value) {
  
  patch_ = value;
  // @@protoc_insertion_point(field_set:dc2.Version.patch)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int SoftwareInfo::kNameFieldNumber;
const int SoftwareInfo::kVersionFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

SoftwareInfo::SoftwareInfo()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.SoftwareInfo)
}
SoftwareInfo::SoftwareInfo(const SoftwareInfo& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.name().size() > 0) {
    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.has_version()) {
    version_ = new ::dc2::Version(*from.version_);
  } else {
    version_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:dc2.SoftwareInfo)
}

void SoftwareInfo::SharedCtor() {
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  version_ = NULL;
  _cached_size_ = 0;
}

SoftwareInfo::~SoftwareInfo() {
  // @@protoc_insertion_point(destructor:dc2.SoftwareInfo)
  SharedDtor();
}

void SoftwareInfo::SharedDtor() {
  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete version_;
}

void SoftwareInfo::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* SoftwareInfo::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const SoftwareInfo& SoftwareInfo::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

SoftwareInfo* SoftwareInfo::New(::google::protobuf::Arena* arena) const {
  SoftwareInfo* n = new SoftwareInfo;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void SoftwareInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.SoftwareInfo)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && version_ != NULL) {
    delete version_;
  }
  version_ = NULL;
  _internal_metadata_.Clear();
}

bool SoftwareInfo::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.SoftwareInfo)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string name = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->name().data(), static_cast<int>(this->name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.SoftwareInfo.name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.Version version = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.SoftwareInfo)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.SoftwareInfo)
  return false;
#undef DO_
}

void SoftwareInfo::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.SoftwareInfo)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.SoftwareInfo.name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->name(), output);
  }

  // .dc2.Version version = 2;
  if (this->has_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, *this->version_, output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.SoftwareInfo)
}

::google::protobuf::uint8* SoftwareInfo::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.SoftwareInfo)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.SoftwareInfo.name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->name(), target);
  }

  // .dc2.Version version = 2;
  if (this->has_version()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        2, *this->version_, deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.SoftwareInfo)
  return target;
}

size_t SoftwareInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.SoftwareInfo)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string name = 1;
  if (this->name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->name());
  }

  // .dc2.Version version = 2;
  if (this->has_version()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->version_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SoftwareInfo::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.SoftwareInfo)
  GOOGLE_DCHECK_NE(&from, this);
  const SoftwareInfo* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const SoftwareInfo>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.SoftwareInfo)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.SoftwareInfo)
    MergeFrom(*source);
  }
}

void SoftwareInfo::MergeFrom(const SoftwareInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.SoftwareInfo)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.name().size() > 0) {

    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.has_version()) {
    mutable_version()->::dc2::Version::MergeFrom(from.version());
  }
}

void SoftwareInfo::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.SoftwareInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void SoftwareInfo::CopyFrom(const SoftwareInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.SoftwareInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SoftwareInfo::IsInitialized() const {
  return true;
}

void SoftwareInfo::Swap(SoftwareInfo* other) {
  if (other == this) return;
  InternalSwap(other);
}
void SoftwareInfo::InternalSwap(SoftwareInfo* other) {
  using std::swap;
  name_.Swap(&other->name_);
  swap(version_, other->version_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata SoftwareInfo::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// SoftwareInfo

// string name = 1;
void SoftwareInfo::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& SoftwareInfo::name() const {
  // @@protoc_insertion_point(field_get:dc2.SoftwareInfo.name)
  return name_.GetNoArena();
}
void SoftwareInfo::set_name(const ::std::string& value) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.SoftwareInfo.name)
}
#if LANG_CXX11
void SoftwareInfo::set_name(::std::string&& value) {
  
  name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.SoftwareInfo.name)
}
#endif
void SoftwareInfo::set_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.SoftwareInfo.name)
}
void SoftwareInfo::set_name(const char* value, size_t size) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.SoftwareInfo.name)
}
::std::string* SoftwareInfo::mutable_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.SoftwareInfo.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* SoftwareInfo::release_name() {
  // @@protoc_insertion_point(field_release:dc2.SoftwareInfo.name)
  
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void SoftwareInfo::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    
  } else {
    
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:dc2.SoftwareInfo.name)
}

// .dc2.Version version = 2;
bool SoftwareInfo::has_version() const {
  return this != internal_default_instance() && version_ != NULL;
}
void SoftwareInfo::clear_version() {
  if (GetArenaNoVirtual() == NULL && version_ != NULL) delete version_;
  version_ = NULL;
}
const ::dc2::Version& SoftwareInfo::version() const {
  const ::dc2::Version* p = version_;
  // @@protoc_insertion_point(field_get:dc2.SoftwareInfo.version)
  return p != NULL ? *p : *reinterpret_cast<const ::dc2::Version*>(
      &::dc2::_Version_default_instance_);
}
::dc2::Version* SoftwareInfo::mutable_version() {
  
  if (version_ == NULL) {
    version_ = new ::dc2::Version;
  }
  // @@protoc_insertion_point(field_mutable:dc2.SoftwareInfo.version)
  return version_;
}
::dc2::Version* SoftwareInfo::release_version() {
  // @@protoc_insertion_point(field_release:dc2.SoftwareInfo.version)
  
  ::dc2::Version* temp = version_;
  version_ = NULL;
  return temp;
}
void SoftwareInfo::set_allocated_version(::dc2::Version* version) {
  delete version_;
  version_ = version;
  if (version) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:dc2.SoftwareInfo.version)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int UserDetails::kRealNameFieldNumber;
const int UserDetails::kAboutFieldNumber;
const int UserDetails::kEmailFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

UserDetails::UserDetails()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.UserDetails)
}
UserDetails::UserDetails(const UserDetails& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  real_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.real_name().size() > 0) {
    real_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.real_name_);
  }
  about_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.about().size() > 0) {
    about_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.about_);
  }
  email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.email().size() > 0) {
    email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.email_);
  }
  // @@protoc_insertion_point(copy_constructor:dc2.UserDetails)
}

void UserDetails::SharedCtor() {
  real_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  about_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _cached_size_ = 0;
}

UserDetails::~UserDetails() {
  // @@protoc_insertion_point(destructor:dc2.UserDetails)
  SharedDtor();
}

void UserDetails::SharedDtor() {
  real_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  about_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  email_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void UserDetails::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* UserDetails::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const UserDetails& UserDetails::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

UserDetails* UserDetails::New(::google::protobuf::Arena* arena) const {
  UserDetails* n = new UserDetails;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void UserDetails::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.UserDetails)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  real_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  about_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  _internal_metadata_.Clear();
}

bool UserDetails::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.UserDetails)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // string real_name = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_real_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->real_name().data(), static_cast<int>(this->real_name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.UserDetails.real_name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string about = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_about()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->about().data(), static_cast<int>(this->about().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.UserDetails.about"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string email = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_email()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->email().data(), static_cast<int>(this->email().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.UserDetails.email"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.UserDetails)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.UserDetails)
  return false;
#undef DO_
}

void UserDetails::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.UserDetails)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string real_name = 1;
  if (this->real_name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->real_name().data(), static_cast<int>(this->real_name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.real_name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->real_name(), output);
  }

  // string about = 2;
  if (this->about().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->about().data(), static_cast<int>(this->about().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.about");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->about(), output);
  }

  // string email = 3;
  if (this->email().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->email().data(), static_cast<int>(this->email().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.email");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->email(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.UserDetails)
}

::google::protobuf::uint8* UserDetails::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.UserDetails)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string real_name = 1;
  if (this->real_name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->real_name().data(), static_cast<int>(this->real_name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.real_name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->real_name(), target);
  }

  // string about = 2;
  if (this->about().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->about().data(), static_cast<int>(this->about().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.about");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->about(), target);
  }

  // string email = 3;
  if (this->email().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->email().data(), static_cast<int>(this->email().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.UserDetails.email");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        3, this->email(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.UserDetails)
  return target;
}

size_t UserDetails::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.UserDetails)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string real_name = 1;
  if (this->real_name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->real_name());
  }

  // string about = 2;
  if (this->about().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->about());
  }

  // string email = 3;
  if (this->email().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->email());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void UserDetails::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.UserDetails)
  GOOGLE_DCHECK_NE(&from, this);
  const UserDetails* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const UserDetails>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.UserDetails)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.UserDetails)
    MergeFrom(*source);
  }
}

void UserDetails::MergeFrom(const UserDetails& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.UserDetails)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.real_name().size() > 0) {

    real_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.real_name_);
  }
  if (from.about().size() > 0) {

    about_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.about_);
  }
  if (from.email().size() > 0) {

    email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.email_);
  }
}

void UserDetails::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.UserDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void UserDetails::CopyFrom(const UserDetails& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.UserDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool UserDetails::IsInitialized() const {
  return true;
}

void UserDetails::Swap(UserDetails* other) {
  if (other == this) return;
  InternalSwap(other);
}
void UserDetails::InternalSwap(UserDetails* other) {
  using std::swap;
  real_name_.Swap(&other->real_name_);
  about_.Swap(&other->about_);
  email_.Swap(&other->email_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata UserDetails::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// UserDetails

// string real_name = 1;
void UserDetails::clear_real_name() {
  real_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& UserDetails::real_name() const {
  // @@protoc_insertion_point(field_get:dc2.UserDetails.real_name)
  return real_name_.GetNoArena();
}
void UserDetails::set_real_name(const ::std::string& value) {
  
  real_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.UserDetails.real_name)
}
#if LANG_CXX11
void UserDetails::set_real_name(::std::string&& value) {
  
  real_name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.UserDetails.real_name)
}
#endif
void UserDetails::set_real_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  real_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.UserDetails.real_name)
}
void UserDetails::set_real_name(const char* value, size_t size) {
  
  real_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.UserDetails.real_name)
}
::std::string* UserDetails::mutable_real_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.UserDetails.real_name)
  return real_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* UserDetails::release_real_name() {
  // @@protoc_insertion_point(field_release:dc2.UserDetails.real_name)
  
  return real_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void UserDetails::set_allocated_real_name(::std::string* real_name) {
  if (real_name != NULL) {
    
  } else {
    
  }
  real_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), real_name);
  // @@protoc_insertion_point(field_set_allocated:dc2.UserDetails.real_name)
}

// string about = 2;
void UserDetails::clear_about() {
  about_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& UserDetails::about() const {
  // @@protoc_insertion_point(field_get:dc2.UserDetails.about)
  return about_.GetNoArena();
}
void UserDetails::set_about(const ::std::string& value) {
  
  about_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.UserDetails.about)
}
#if LANG_CXX11
void UserDetails::set_about(::std::string&& value) {
  
  about_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.UserDetails.about)
}
#endif
void UserDetails::set_about(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  about_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.UserDetails.about)
}
void UserDetails::set_about(const char* value, size_t size) {
  
  about_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.UserDetails.about)
}
::std::string* UserDetails::mutable_about() {
  
  // @@protoc_insertion_point(field_mutable:dc2.UserDetails.about)
  return about_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* UserDetails::release_about() {
  // @@protoc_insertion_point(field_release:dc2.UserDetails.about)
  
  return about_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void UserDetails::set_allocated_about(::std::string* about) {
  if (about != NULL) {
    
  } else {
    
  }
  about_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), about);
  // @@protoc_insertion_point(field_set_allocated:dc2.UserDetails.about)
}

// string email = 3;
void UserDetails::clear_email() {
  email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& UserDetails::email() const {
  // @@protoc_insertion_point(field_get:dc2.UserDetails.email)
  return email_.GetNoArena();
}
void UserDetails::set_email(const ::std::string& value) {
  
  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.UserDetails.email)
}
#if LANG_CXX11
void UserDetails::set_email(::std::string&& value) {
  
  email_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.UserDetails.email)
}
#endif
void UserDetails::set_email(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.UserDetails.email)
}
void UserDetails::set_email(const char* value, size_t size) {
  
  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.UserDetails.email)
}
::std::string* UserDetails::mutable_email() {
  
  // @@protoc_insertion_point(field_mutable:dc2.UserDetails.email)
  return email_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* UserDetails::release_email() {
  // @@protoc_insertion_point(field_release:dc2.UserDetails.email)
  
  return email_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void UserDetails::set_allocated_email(::std::string* email) {
  if (email != NULL) {
    
  } else {
    
  }
  email_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), email);
  // @@protoc_insertion_point(field_set_allocated:dc2.UserDetails.email)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int User::kSidFieldNumber;
const int User::kNameFieldNumber;
const int User::kKindFieldNumber;
const int User::kStatusFieldNumber;
const int User::kRoleFieldNumber;
const int User::kClientFieldNumber;
const int User::kDetailsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

User::User()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.User)
}
User::User(const User& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.name().size() > 0) {
    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.has_client()) {
    client_ = new ::dc2::SoftwareInfo(*from.client_);
  } else {
    client_ = NULL;
  }
  if (from.has_details()) {
    details_ = new ::dc2::UserDetails(*from.details_);
  } else {
    details_ = NULL;
  }
  ::memcpy(&sid_, &from.sid_,
    static_cast<size_t>(reinterpret_cast<char*>(&role_) -
    reinterpret_cast<char*>(&sid_)) + sizeof(role_));
  // @@protoc_insertion_point(copy_constructor:dc2.User)
}

void User::SharedCtor() {
  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&client_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&role_) -
      reinterpret_cast<char*>(&client_)) + sizeof(role_));
  _cached_size_ = 0;
}

User::~User() {
  // @@protoc_insertion_point(destructor:dc2.User)
  SharedDtor();
}

void User::SharedDtor() {
  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete client_;
  if (this != internal_default_instance()) delete details_;
}

void User::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* User::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const User& User::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

User* User::New(::google::protobuf::Arena* arena) const {
  User* n = new User;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void User::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.User)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (GetArenaNoVirtual() == NULL && client_ != NULL) {
    delete client_;
  }
  client_ = NULL;
  if (GetArenaNoVirtual() == NULL && details_ != NULL) {
    delete details_;
  }
  details_ = NULL;
  ::memset(&sid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&role_) -
      reinterpret_cast<char*>(&sid_)) + sizeof(role_));
  _internal_metadata_.Clear();
}

bool User::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.User)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 sid = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // string name = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
            this->name().data(), static_cast<int>(this->name().length()),
            ::google::protobuf::internal::WireFormatLite::PARSE,
            "dc2.User.name"));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.User.Kind kind = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_kind(static_cast< ::dc2::User_Kind >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.User.Status status = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_status(static_cast< ::dc2::User_Status >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.User.Role role = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_role(static_cast< ::dc2::User_Role >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.SoftwareInfo client = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_client()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .dc2.UserDetails details = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_details()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.User)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.User)
  return false;
#undef DO_
}

void User::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.User)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->sid(), output);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.User.name");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->name(), output);
  }

  // .dc2.User.Kind kind = 3;
  if (this->kind() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->kind(), output);
  }

  // .dc2.User.Status status = 4;
  if (this->status() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->status(), output);
  }

  // .dc2.User.Role role = 5;
  if (this->role() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      5, this->role(), output);
  }

  // .dc2.SoftwareInfo client = 6;
  if (this->has_client()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, *this->client_, output);
  }

  // .dc2.UserDetails details = 7;
  if (this->has_details()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, *this->details_, output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.User)
}

::google::protobuf::uint8* User::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.User)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 sid = 1;
  if (this->sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->sid(), target);
  }

  // string name = 2;
  if (this->name().size() > 0) {
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->name().data(), static_cast<int>(this->name().length()),
      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
      "dc2.User.name");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->name(), target);
  }

  // .dc2.User.Kind kind = 3;
  if (this->kind() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      3, this->kind(), target);
  }

  // .dc2.User.Status status = 4;
  if (this->status() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      4, this->status(), target);
  }

  // .dc2.User.Role role = 5;
  if (this->role() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      5, this->role(), target);
  }

  // .dc2.SoftwareInfo client = 6;
  if (this->has_client()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        6, *this->client_, deterministic, target);
  }

  // .dc2.UserDetails details = 7;
  if (this->has_details()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageNoVirtualToArray(
        7, *this->details_, deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.User)
  return target;
}

size_t User::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.User)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // string name = 2;
  if (this->name().size() > 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::StringSize(
        this->name());
  }

  // .dc2.SoftwareInfo client = 6;
  if (this->has_client()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->client_);
  }

  // .dc2.UserDetails details = 7;
  if (this->has_details()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        *this->details_);
  }

  // int64 sid = 1;
  if (this->sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->sid());
  }

  // .dc2.User.Kind kind = 3;
  if (this->kind() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->kind());
  }

  // .dc2.User.Status status = 4;
  if (this->status() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
  }

  // .dc2.User.Role role = 5;
  if (this->role() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->role());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void User::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.User)
  GOOGLE_DCHECK_NE(&from, this);
  const User* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const User>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.User)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.User)
    MergeFrom(*source);
  }
}

void User::MergeFrom(const User& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.User)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.name().size() > 0) {

    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  if (from.has_client()) {
    mutable_client()->::dc2::SoftwareInfo::MergeFrom(from.client());
  }
  if (from.has_details()) {
    mutable_details()->::dc2::UserDetails::MergeFrom(from.details());
  }
  if (from.sid() != 0) {
    set_sid(from.sid());
  }
  if (from.kind() != 0) {
    set_kind(from.kind());
  }
  if (from.status() != 0) {
    set_status(from.status());
  }
  if (from.role() != 0) {
    set_role(from.role());
  }
}

void User::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.User)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void User::CopyFrom(const User& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.User)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool User::IsInitialized() const {
  return true;
}

void User::Swap(User* other) {
  if (other == this) return;
  InternalSwap(other);
}
void User::InternalSwap(User* other) {
  using std::swap;
  name_.Swap(&other->name_);
  swap(client_, other->client_);
  swap(details_, other->details_);
  swap(sid_, other->sid_);
  swap(kind_, other->kind_);
  swap(status_, other->status_);
  swap(role_, other->role_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata User::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// User

// int64 sid = 1;
void User::clear_sid() {
  sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 User::sid() const {
  // @@protoc_insertion_point(field_get:dc2.User.sid)
  return sid_;
}
void User::set_sid(::google::protobuf::int64 value) {
  
  sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.User.sid)
}

// string name = 2;
void User::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
const ::std::string& User::name() const {
  // @@protoc_insertion_point(field_get:dc2.User.name)
  return name_.GetNoArena();
}
void User::set_name(const ::std::string& value) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:dc2.User.name)
}
#if LANG_CXX11
void User::set_name(::std::string&& value) {
  
  name_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:dc2.User.name)
}
#endif
void User::set_name(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:dc2.User.name)
}
void User::set_name(const char* value, size_t size) {
  
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:dc2.User.name)
}
::std::string* User::mutable_name() {
  
  // @@protoc_insertion_point(field_mutable:dc2.User.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
::std::string* User::release_name() {
  // @@protoc_insertion_point(field_release:dc2.User.name)
  
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
void User::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    
  } else {
    
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:dc2.User.name)
}

// .dc2.User.Kind kind = 3;
void User::clear_kind() {
  kind_ = 0;
}
::dc2::User_Kind User::kind() const {
  // @@protoc_insertion_point(field_get:dc2.User.kind)
  return static_cast< ::dc2::User_Kind >(kind_);
}
void User::set_kind(::dc2::User_Kind value) {
  
  kind_ = value;
  // @@protoc_insertion_point(field_set:dc2.User.kind)
}

// .dc2.User.Status status = 4;
void User::clear_status() {
  status_ = 0;
}
::dc2::User_Status User::status() const {
  // @@protoc_insertion_point(field_get:dc2.User.status)
  return static_cast< ::dc2::User_Status >(status_);
}
void User::set_status(::dc2::User_Status value) {
  
  status_ = value;
  // @@protoc_insertion_point(field_set:dc2.User.status)
}

// .dc2.User.Role role = 5;
void User::clear_role() {
  role_ = 0;
}
::dc2::User_Role User::role() const {
  // @@protoc_insertion_point(field_get:dc2.User.role)
  return static_cast< ::dc2::User_Role >(role_);
}
void User::set_role(::dc2::User_Role value) {
  
  role_ = value;
  // @@protoc_insertion_point(field_set:dc2.User.role)
}

// .dc2.SoftwareInfo client = 6;
bool User::has_client() const {
  return this != internal_default_instance() && client_ != NULL;
}
void User::clear_client() {
  if (GetArenaNoVirtual() == NULL && client_ != NULL) delete client_;
  client_ = NULL;
}
const ::dc2::SoftwareInfo& User::client() const {
  const ::dc2::SoftwareInfo* p = client_;
  // @@protoc_insertion_point(field_get:dc2.User.client)
  return p != NULL ? *p : *reinterpret_cast<const ::dc2::SoftwareInfo*>(
      &::dc2::_SoftwareInfo_default_instance_);
}
::dc2::SoftwareInfo* User::mutable_client() {
  
  if (client_ == NULL) {
    client_ = new ::dc2::SoftwareInfo;
  }
  // @@protoc_insertion_point(field_mutable:dc2.User.client)
  return client_;
}
::dc2::SoftwareInfo* User::release_client() {
  // @@protoc_insertion_point(field_release:dc2.User.client)
  
  ::dc2::SoftwareInfo* temp = client_;
  client_ = NULL;
  return temp;
}
void User::set_allocated_client(::dc2::SoftwareInfo* client) {
  delete client_;
  client_ = client;
  if (client) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:dc2.User.client)
}

// .dc2.UserDetails details = 7;
bool User::has_details() const {
  return this != internal_default_instance() && details_ != NULL;
}
void User::clear_details() {
  if (GetArenaNoVirtual() == NULL && details_ != NULL) delete details_;
  details_ = NULL;
}
const ::dc2::UserDetails& User::details() const {
  const ::dc2::UserDetails* p = details_;
  // @@protoc_insertion_point(field_get:dc2.User.details)
  return p != NULL ? *p : *reinterpret_cast<const ::dc2::UserDetails*>(
      &::dc2::_UserDetails_default_instance_);
}
::dc2::UserDetails* User::mutable_details() {
  
  if (details_ == NULL) {
    details_ = new ::dc2::UserDetails;
  }
  // @@protoc_insertion_point(field_mutable:dc2.User.details)
  return details_;
}
::dc2::UserDetails* User::release_details() {
  // @@protoc_insertion_point(field_release:dc2.User.details)
  
  ::dc2::UserDetails* temp = details_;
  details_ = NULL;
  return temp;
}
void User::set_allocated_details(::dc2::UserDetails* details) {
  delete details_;
  details_ = details;
  if (details) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:dc2.User.details)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int UsersReq::kChannelFieldNumber;
const int UsersReq::kAfterSidFieldNumber;
const int UsersReq::kLimitFieldNumber;
const int UsersReq::kWatchFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

UsersReq::UsersReq()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_dc2_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:dc2.UsersReq)
}
UsersReq::UsersReq(const UsersReq& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&channel_, &from.channel_,
    static_cast<size_t>(reinterpret_cast<char*>(&watch_) -
    reinterpret_cast<char*>(&channel_)) + sizeof(watch_));
  // @@protoc_insertion_point(copy_constructor:dc2.UsersReq)
}

void UsersReq::SharedCtor() {
  ::memset(&channel_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&watch_) -
      reinterpret_cast<char*>(&channel_)) + sizeof(watch_));
  _cached_size_ = 0;
}

UsersReq::~UsersReq() {
  // @@protoc_insertion_point(destructor:dc2.UsersReq)
  SharedDtor();
}

void UsersReq::SharedDtor() {
}

void UsersReq::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* UsersReq::descriptor() {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const UsersReq& UsersReq::default_instance() {
  protobuf_dc2_2eproto::InitDefaults();
  return *internal_default_instance();
}

UsersReq* UsersReq::New(::google::protobuf::Arena* arena) const {
  UsersReq* n = new UsersReq;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void UsersReq::Clear() {
// @@protoc_insertion_point(message_clear_start:dc2.UsersReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&channel_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&watch_) -
      reinterpret_cast<char*>(&channel_)) + sizeof(watch_));
  _internal_metadata_.Clear();
}

bool UsersReq::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:dc2.UsersReq)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // int64 channel = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &channel_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int64 after_sid = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &after_sid_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 limit = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &limit_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool watch = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &watch_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:dc2.UsersReq)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:dc2.UsersReq)
  return false;
#undef DO_
}

void UsersReq::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:dc2.UsersReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 channel = 1;
  if (this->channel() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(1, this->channel(), output);
  }

  // int64 after_sid = 2;
  if (this->after_sid() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->after_sid(), output);
  }

  // int32 limit = 3;
  if (this->limit() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->limit(), output);
  }

  // bool watch = 4;
  if (this->watch() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->watch(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:dc2.UsersReq)
}

::google::protobuf::uint8* UsersReq::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:dc2.UsersReq)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 channel = 1;
  if (this->channel() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(1, this->channel(), target);
  }

  // int64 after_sid = 2;
  if (this->after_sid() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->after_sid(), target);
  }

  // int32 limit = 3;
  if (this->limit() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->limit(), target);
  }

  // bool watch = 4;
  if (this->watch() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->watch(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:dc2.UsersReq)
  return target;
}

size_t UsersReq::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:dc2.UsersReq)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // int64 channel = 1;
  if (this->channel() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->channel());
  }

  // int64 after_sid = 2;
  if (this->after_sid() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int64Size(
        this->after_sid());
  }

  // int32 limit = 3;
  if (this->limit() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->limit());
  }

  // bool watch = 4;
  if (this->watch() != 0) {
    total_size += 1 + 1;
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void UsersReq::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:dc2.UsersReq)
  GOOGLE_DCHECK_NE(&from, this);
  const UsersReq* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const UsersReq>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dc2.UsersReq)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:dc2.UsersReq)
    MergeFrom(*source);
  }
}

void UsersReq::MergeFrom(const UsersReq& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:dc2.UsersReq)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.channel() != 0) {
    set_channel(from.channel());
  }
  if (from.after_sid() != 0) {
    set_after_sid(from.after_sid());
  }
  if (from.limit() != 0) {
    set_limit(from.limit());
  }
  if (from.watch() != 0) {
    set_watch(from.watch());
  }
}

void UsersReq::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:dc2.UsersReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void UsersReq::CopyFrom(const UsersReq& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:dc2.UsersReq)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool UsersReq::IsInitialized() const {
  return true;
}

void UsersReq::Swap(UsersReq* other) {
  if (other == this) return;
  InternalSwap(other);
}
void UsersReq::InternalSwap(UsersReq* other) {
  using std::swap;
  swap(channel_, other->channel_);
  swap(after_sid_, other->after_sid_);
  swap(limit_, other->limit_);
  swap(watch_, other->watch_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata UsersReq::GetMetadata() const {
  protobuf_dc2_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_dc2_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// UsersReq

// int64 channel = 1;
void UsersReq::clear_channel() {
  channel_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 UsersReq::channel() const {
  // @@protoc_insertion_point(field_get:dc2.UsersReq.channel)
  return channel_;
}
void UsersReq::set_channel(::google::protobuf::int64 value) {
  
  channel_ = value;
  // @@protoc_insertion_point(field_set:dc2.UsersReq.channel)
}

// int64 after_sid = 2;
void UsersReq::clear_after_sid() {
  after_sid_ = GOOGLE_LONGLONG(0);
}
::google::protobuf::int64 UsersReq::after_sid() const {
  // @@protoc_insertion_point(field_get:dc2.UsersReq.after_sid)
  return after_sid_;
}
void UsersReq::set_after_sid(::google::protobuf::int64 value) {
  
  after_sid_ = value;
  // @@protoc_insertion_point(field_set:dc2.UsersReq.after_sid)
}

// int32 limit = 3;
void UsersReq::clear_limit() {
  limit_ = 0;
}
::google::protobuf::int32 UsersReq::limit() const {
  // @@protoc_insertion_point(field_get:dc2.UsersReq.limit)
  return limit_;
}
void UsersReq::set_limit(::google::protobuf::int32 value) {
  
  limit_ = value;
  // @@protoc_insertion_point(field_set:dc2.UsersReq.limit)
}

// bool watch = 4;
void UsersReq::clear_watch() {
  watch_ = false;
}
bool UsersReq::watch() const {
  // @@protoc_insertion_point(field_get:dc2.UsersReq.watch)
  return watch_;
}
void UsersReq::set_watch(bool value) {
  
  watch_ = value;
  // @@protoc_insertion_point(field_set:dc2.UsersReq.watch)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// @@protoc_insertion_point(namespace_scope)

}  // namespace dc2

// @@protoc_insertion_point(global_scope)
